--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / components / tools / RNPathPage.vue
Displaying Raw • Download
meshchatx/src/frontend/components/tools/RNPathPage.vue 026b8c5bc7855095c2eb4e1cc43329493f8bad57 (026b8c5b) Text, 28.95 KB
T8b949e<!-- SPDX-License-Identifier: 0BSD -->
Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col flex-1 overflow-hidden min-w-0 bg-slate-50 dark:bg-zinc-950"Tb4b4b4>
Tb4b4b4<Tff7b72ToolsPageHeader
Te6edf3iconTff7b72=Ta5d6ff"route"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'tools.rnpath.title'Tb4b4b4)Ta5d6ff"
Tb4b4b4:Te6edf3descriptionTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'tools.rnpath.description'Tb4b4b4)Ta5d6ff"
Te6edf3accentTff7b72=Ta5d6ff"indigo"
Tb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3actionsTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-2 text-gray-500 hover:text-indigo-500 dark:text-gray-400 dark:hover:text-indigo-400 transition-colors"
Te6edf3titleTff7b72=Ta5d6ff"Refresh"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3refreshAllTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"refresh"
Te6edf3classTff7b72=Ta5d6ff"size-6"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'animate-spin-reverse'Tff7b72: Te6edf3isLoading Tb4b4b4}Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ToolsPageHeaderTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex-1 overflow-y-auto min-w-0 p-3 sm:p-4 md:p-6 space-y-4 sm:space-y-6 pb-[max(1rem,env(safe-area-inset-bottom))]"
Tb4b4b4>
T8b949e<!-- tabs -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"-mx-3 sm:mx-0 overflow-x-auto border-b border-gray-200 dark:border-zinc-800"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex min-w-0 px-3 sm:px-0"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3t Tff7b72in Tb4b4b4[Ta5d6ff'table'Tb4b4b4, Ta5d6ff'rates'Tb4b4b4, Ta5d6ff'actions'Tb4b4b4]Ta5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3tTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"shrink-0 px-4 sm:px-6 py-3 text-sm font-semibold transition-colors border-b-2 -mb-px"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[
Te6edf3tab Tff7b72=== Te6edf3t
Tff7b72? Ta5d6ff'text-indigo-600 border-indigo-500 dark:text-indigo-400 dark:border-indigo-400'
Tff7b72: Ta5d6ff'text-gray-500 border-transparent hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200'Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3tab Tff7b72= Te6edf3tTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3tTb4b4b4.Te6edf3charAtTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4.Te6edf3toUpperCaseTb4b4b4(Tb4b4b4) Tff7b72+ Te6edf3tTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff1Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- path table -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3tab Tff7b72=== Ta5d6ff'table'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"rounded-lg border border-gray-200 dark:border-zinc-800 bg-white dark:bg-zinc-950 p-3 sm:p-4 space-y-3"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm font-semibold"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"rnstatus.remote_query"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"rnstatus.remote_query_hint"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid gap-3 lg:grid-cols-2"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3remoteHashTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3classTff7b72=Ta5d6ff"input-field font-mono text-xs"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'rnstatus.remote_transport_placeholder'Tb4b4b4)Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3remoteTimeoutTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"1"
Te6edf3classTff7b72=Ta5d6ff"input-field text-sm"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'rnstatus.remote_timeout'Tb4b4b4)Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72ManagementIdentityPicker Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3identityPathTa5d6ff" Te6edf3default-nameTff7b72=Ta5d6ff"mgmt" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3activeRemoteHashTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap items-center gap-2 text-xs"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-mono text-amber-700 dark:text-amber-300"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"rnstatus.remote_active"Tb4b4b4, Tb4b4b4{ Te6edf3hashTff7b72: Te6edf3activeRemoteHash Tb4b4b4}Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"secondary-chip px-2 py-1 text-xs" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3clearRemoteTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"rnstatus.use_local"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- filters -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"rounded-lg border border-gray-200 dark:border-zinc-800 bg-white dark:bg-zinc-950 p-3 sm:p-4 grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-3 sm:gap-4"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"relative"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3searchQueryTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Search Hash or Via..."
Te6edf3classTff7b72=Ta5d6ff"input-field pr-10"
Te6edf3autocompleteTff7b72=Ta5d6ff"off"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"magnify"
Te6edf3classTff7b72=Ta5d6ff"pointer-events-none absolute right-3 top-1/2 size-5 -translate-y-1/2 text-gray-400"
Te6edf3aria-hiddenTff7b72=Ta5d6ff"true"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72select Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3filterInterfaceTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"input-field"Tb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff""Tb4b4b4>All InterfacesTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3iface Tff7b72in Te6edf3interfacesTa5d6ff" Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3ifaceTa5d6ff" Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3ifaceTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3iface Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-xs font-semibold text-gray-500 uppercase min-w-fit"Tb4b4b4>Hops:Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3filterHopsTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3maxTff7b72=Ta5d6ff"128"
Te6edf3placeholderTff7b72=Ta5d6ff"Any"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap items-center justify-start sm:justify-end gap-x-4 gap-y-2 sm:flex-nowrap lg:col-span-1"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col items-start sm:items-end"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-gray-400 uppercase"Tb4b4b4>TotalTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm font-bold"Tb4b4b4>Tff7b72{{ Te6edf3totalItems Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col items-start sm:items-end"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-green-500 uppercase"Tb4b4b4>ResponsiveTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm font-bold text-green-600 dark:text-green-400"Tb4b4b4>Tff7b72{{
Te6edf3responsiveItems
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col items-start sm:items-end"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-red-500 uppercase"Tb4b4b4>UnresponsiveTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm font-bold text-red-600 dark:text-red-400"Tb4b4b4>Tff7b72{{
Te6edf3unresponsiveItems
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3pathTableTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"rounded-lg border border-gray-200 dark:border-zinc-800 bg-white dark:bg-zinc-950 p-8 sm:p-12 text-center text-gray-500"
Tb4b4b4>
No paths found matching your criteria.
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"grid gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3path Tff7b72in Te6edf3pathTableTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3pathTb4b4b4.Te6edf3hashTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"rounded-lg border border-gray-200 dark:border-zinc-800 bg-white dark:bg-zinc-950 p-3 sm:p-4 flex flex-col sm:flex-row sm:items-center justify-between gap-4 border-l-4"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[
Te6edf3pathTb4b4b4.Te6edf3state Tff7b72=== T79c0ff2
Tff7b72? Ta5d6ff'border-l-green-500'
Tff7b72: Te6edf3pathTb4b4b4.Te6edf3state Tff7b72=== T79c0ff1
Tff7b72? Ta5d6ff'border-l-red-500'
Tff7b72: Ta5d6ff'border-l-gray-300 dark:border-l-zinc-700'Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap items-center gap-2 mb-1"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-mono text-sm font-bold text-indigo-600 dark:text-indigo-400 truncate"Tb4b4b4>
Tff7b72{{ Te6edf3pathTb4b4b4.Te6edf3hash Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3classTff7b72=Ta5d6ff"px-2 py-0.5 text-[10px] font-bold bg-indigo-50 dark:bg-indigo-900/30 text-indigo-700 dark:text-indigo-300 rounded-sm uppercase tracking-wider"
Tb4b4b4>
Tff7b72{{ Te6edf3pathTb4b4b4.Te6edf3hops Tff7b72}} Tff7b72{{ Te6edf3pathTb4b4b4.Te6edf3hops Tff7b72=== T79c0ff1 Tff7b72? Ta5d6ff"hop" Tff7b72: Ta5d6ff"hops" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3classTff7b72=Ta5d6ff"px-2 py-0.5 text-[10px] font-bold rounded-sm uppercase tracking-wider"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3getStateColorTb4b4b4(Te6edf3pathTb4b4b4.Te6edf3stateTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3getStateTextTb4b4b4(Te6edf3pathTb4b4b4.Te6edf3stateTb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-gray-400 font-mono truncate"Tb4b4b4>
via Tff7b72{{ Te6edf3pathTb4b4b4.Te6edf3via Tff7b72}} on Tff7b72{{ Te6edf3pathTb4b4b4.Tff7b72interface Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-x-4 gap-y-1 mt-2 text-[10px]"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-gray-400"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-semibold uppercase"Tb4b4b4>Last Updated:Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tff7b72{{ Te6edf3pathTb4b4b4.Te6edf3timestamp Tff7b72? Te6edf3formatDateTb4b4b4(Te6edf3pathTb4b4b4.Te6edf3timestampTb4b4b4) Tff7b72: Ta5d6ff"Unknown" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-gray-400"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-semibold uppercase"Tb4b4b4>Expires:Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4> Tff7b72{{ Te6edf3formatDateTb4b4b4(Te6edf3pathTb4b4b4.Te6edf3expiresTb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3pathTb4b4b4.Te6edf3announce_hashTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-gray-400"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-semibold uppercase"Tb4b4b4>Announce Hash:Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4> Tff7b72{{ Te6edf3pathTb4b4b4.Te6edf3announce_hash Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"px-3 py-1.5 text-xs font-semibold text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-900/20 rounded-lg transition-colors border border-red-200 dark:border-red-900/30"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3dropPathTb4b4b4(Te6edf3pathTb4b4b4.Te6edf3hashTb4b4b4)Ta5d6ff"
Tb4b4b4>
Drop Path
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- pagination -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3totalPages Tff7b72> T79c0ff1Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 rounded-lg border border-gray-200 dark:border-zinc-800 bg-white dark:bg-zinc-950 p-3 sm:p-4"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-zinc-800 disabled:opacity-50 transition-colors"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3currentPage Tff7b72=== T79c0ff1Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3currentPageTff7b72--Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"chevron-left" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm font-medium"Tb4b4b4> Page Tff7b72{{ Te6edf3currentPage Tff7b72}} of Tff7b72{{ Te6edf3totalPages Tff7b72}} Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-zinc-800 disabled:opacity-50 transition-colors"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3currentPage Tff7b72=== Te6edf3totalPagesTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3currentPageTff7b72++Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"chevron-right" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 justify-between sm:justify-end w-full sm:w-auto"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 uppercase font-semibold"Tb4b4b4>Show:Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3itemsPerPageTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-transparent border-none text-sm font-bold focus:ring-0 cursor-pointer"
Tb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"T79c0ff20Ta5d6ff"Tb4b4b4>20Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"T79c0ff50Ta5d6ff"Tb4b4b4>50Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"T79c0ff100Ta5d6ff"Tb4b4b4>100Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"T79c0ff250Ta5d6ff"Tb4b4b4>250Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- announce rates -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3tab Tff7b72=== Ta5d6ff'rates'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3rateTableTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"rounded-lg border border-gray-200 dark:border-zinc-800 bg-white dark:bg-zinc-950 p-8 sm:p-12 text-center text-gray-500"
Tb4b4b4>
No announce rate data available.
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"grid gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3rate Tff7b72in Te6edf3rateTableTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3rateTb4b4b4.Te6edf3hashTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"rounded-lg border border-gray-200 dark:border-zinc-800 bg-white dark:bg-zinc-950 p-3 sm:p-4"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-3"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-mono text-sm font-bold text-indigo-600 dark:text-indigo-400 truncate"Tb4b4b4>
Tff7b72{{ Te6edf3rateTb4b4b4.Te6edf3hash Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3rateTb4b4b4.Te6edf3blocked_until Tff7b72> Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72/ T79c0ff1000Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-2 py-0.5 text-[10px] font-bold bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-300 rounded-sm"
Tb4b4b4>
RATE LIMITED
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 sm:grid-cols-4 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] uppercase text-gray-500"Tb4b4b4>Last HeardTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs font-medium"Tb4b4b4>Tff7b72{{ Te6edf3formatTimeAgoTb4b4b4(Te6edf3rateTb4b4b4.Te6edf3lastTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] uppercase text-gray-500"Tb4b4b4>AnnouncesTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs font-medium"Tb4b4b4>Tff7b72{{ Te6edf3rateTb4b4b4.Te6edf3timestampsTb4b4b4.Te6edf3length Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] uppercase text-gray-500"Tb4b4b4>ViolationsTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"text-xs font-medium"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3rateTb4b4b4.Te6edf3rate_violations Tff7b72> T79c0ff0 Tff7b72? Ta5d6ff'text-red-500' Tff7b72: Ta5d6ff''Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3rateTb4b4b4.Te6edf3rate_violations Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] uppercase text-gray-500"Tb4b4b4>RateTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs font-medium"Tb4b4b4>Tff7b72{{ Te6edf3calculateRateTb4b4b4(Te6edf3rateTb4b4b4) Tff7b72}} / hrTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- manual actions -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3tab Tff7b72=== Ta5d6ff'actions'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"max-w-2xl mx-auto space-y-6"Tb4b4b4>
T8b949e<!-- request path -->
Tb4b4b4<Tff7b72section
Te6edf3classTff7b72=Ta5d6ff"rounded-lg border border-gray-200 dark:border-zinc-800 bg-white dark:bg-zinc-950 p-4 sm:p-6 space-y-4"
Tb4b4b4>
Tb4b4b4<Tff7b72h2 Te6edf3classTff7b72=Ta5d6ff"text-lg font-bold"Tb4b4b4>Request PathTb4b4b4<Tb4b4b4/Tff7b72h2Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500"Tb4b4b4>Broadcast a path request for a destination hash.Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col sm:flex-row gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3requestHashTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Destination Hash (32 hex chars)"
Te6edf3classTff7b72=Ta5d6ff"input-field flex-1 min-w-0 font-mono"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"px-4 py-2.5 sm:py-2 bg-indigo-600 text-white rounded-lg font-semibold hover:bg-indigo-500 transition active:scale-95 disabled:opacity-50 shrink-0"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3requestHashTb4b4b4.Te6edf3length Tff7b72!== T79c0ff32Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3requestPathTa5d6ff"
Tb4b4b4>
Request
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72sectionTb4b4b4>
T8b949e<!-- drop all via -->
Tb4b4b4<Tff7b72section
Te6edf3classTff7b72=Ta5d6ff"rounded-lg border border-gray-200 dark:border-zinc-800 bg-white dark:bg-zinc-950 p-4 sm:p-6 space-y-4"
Tb4b4b4>
Tb4b4b4<Tff7b72h2 Te6edf3classTff7b72=Ta5d6ff"text-lg font-bold"Tb4b4b4>Drop All ViaTb4b4b4<Tb4b4b4/Tff7b72h2Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500"Tb4b4b4>
Remove all known paths routed through a specific transport instance.
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col sm:flex-row gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3dropViaHashTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Transport Instance Hash"
Te6edf3classTff7b72=Ta5d6ff"input-field flex-1 min-w-0 font-mono"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"px-4 py-2.5 sm:py-2 bg-red-600 text-white rounded-lg font-semibold hover:bg-red-500 transition active:scale-95 disabled:opacity-50 shrink-0"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3dropViaHashTb4b4b4.Te6edf3length Tff7b72!== T79c0ff32Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3dropAllViaTa5d6ff"
Tb4b4b4>
Drop All
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72sectionTb4b4b4>
T8b949e<!-- drop queues -->
Tb4b4b4<Tff7b72section
Te6edf3classTff7b72=Ta5d6ff"rounded-lg border border-gray-200 dark:border-zinc-800 bg-white dark:bg-zinc-950 p-4 sm:p-6 space-y-4"
Tb4b4b4>
Tb4b4b4<Tff7b72h2 Te6edf3classTff7b72=Ta5d6ff"text-lg font-bold"Tb4b4b4>Drop Announce QueuesTb4b4b4<Tb4b4b4/Tff7b72h2Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500"Tb4b4b4>
Clear all outbound announce packets currently queued on all interfaces.
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"w-full px-4 py-3 bg-zinc-800 text-white rounded-lg font-semibold hover:bg-zinc-700 transition active:scale-95"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3dropAnnounceQueuesTa5d6ff"
Tb4b4b4>
Purge All Queues
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72sectionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Te6edf3MaterialDesignIcon Tff7b72from Ta5d6ff"../MaterialDesignIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3ToastUtils Tff7b72from Ta5d6ff"../../js/ToastUtils"Tb4b4b4;
Tff7b72import Te6edf3DialogUtils Tff7b72from Ta5d6ff"../../js/DialogUtils"Tb4b4b4;
Tff7b72import Te6edf3Utils Tff7b72from Ta5d6ff"../../js/Utils"Tb4b4b4;
Tff7b72import Te6edf3ToolsPageHeader Tff7b72from Ta5d6ff"./ToolsPageHeader.vue"Tb4b4b4;
Tff7b72import Te6edf3ManagementIdentityPicker Tff7b72from Ta5d6ff"./ManagementIdentityPicker.vue"Tb4b4b4;
Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"RNPathPage"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{
Te6edf3MaterialDesignIconTb4b4b4,
Te6edf3ToolsPageHeaderTb4b4b4,
Te6edf3ManagementIdentityPickerTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3tabTff7b72: Ta5d6ff"table"Tb4b4b4,
Te6edf3isLoadingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3pathTableTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3rateTableTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3requestHashTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3dropViaHashTff7b72: Ta5d6ff""Tb4b4b4,
T8b949e// Pagination & Filtering
Te6edf3searchQueryTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3filterInterfaceTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3filterHopsTff7b72: Tff7b72nullTb4b4b4,
Te6edf3currentPageTff7b72: T79c0ff1Tb4b4b4,
Te6edf3itemsPerPageTff7b72: T79c0ff50Tb4b4b4,
Te6edf3totalItemsTff7b72: T79c0ff0Tb4b4b4,
Te6edf3responsiveItemsTff7b72: T79c0ff0Tb4b4b4,
Te6edf3unresponsiveItemsTff7b72: T79c0ff0Tb4b4b4,
Te6edf3interfacesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3remoteHashTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3identityPathTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3remoteTimeoutTff7b72: T79c0ff15Tb4b4b4,
Te6edf3activeRemoteHashTff7b72: Ta5d6ff""Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3totalPagesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657MathTb4b4b4.Te6edf3ceilTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3totalItems Tff7b72/ Tff7b72thisTb4b4b4.Te6edf3itemsPerPageTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3watchTff7b72: Tb4b4b4{
Te6edf3searchQueryTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3currentPage Tff7b72= T79c0ff1Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3refreshTableTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3filterInterfaceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3currentPage Tff7b72= T79c0ff1Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3refreshTableTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3filterHopsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3currentPage Tff7b72= T79c0ff1Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3refreshTableTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3currentPageTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3refreshTableTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3itemsPerPageTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3currentPage Tff7b72= T79c0ff1Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3refreshTableTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3mountedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3refreshAllTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Te6edf3remoteQueryParamsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3remote Tff7b72= Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3remoteHash Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3remoteTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3params Tff7b72= Tb4b4b4{ Te6edf3remote Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3identityPathTb4b4b4) Tb4b4b4{
Te6edf3paramsTb4b4b4.Te6edf3identity_path Tff7b72= Tff7b72thisTb4b4b4.Te6edf3identityPathTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3remoteTimeoutTb4b4b4) Tb4b4b4{
Te6edf3paramsTb4b4b4.Te6edf3timeout Tff7b72= Tff7b72thisTb4b4b4.Te6edf3remoteTimeoutTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3paramsTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3clearRemoteTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3remoteHash Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3activeRemoteHash Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3refreshAllTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3refreshAllTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isLoading Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3remoteParams Tff7b72= Tff7b72thisTb4b4b4.Te6edf3remoteQueryParamsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Tb4b4b4[Te6edf3pathResTb4b4b4, Te6edf3rateResTb4b4b4, Te6edf3ifaceResTb4b4b4, Te6edf3discResTb4b4b4] Tff7b72= Tff7b72await Tffa657PromiseTb4b4b4.Te6edf3allTb4b4b4(Tb4b4b4[
Tff7b72thisTb4b4b4.Te6edf3fetchPathTableTb4b4b4(Tb4b4b4)Tb4b4b4,
Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/rnpath/rates"Tb4b4b4, Tb4b4b4{ Te6edf3paramsTff7b72: Te6edf3remoteParams Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/reticulum/interfaces"Tb4b4b4)Tb4b4b4,
Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/reticulum/discovered-interfaces"Tb4b4b4)Tb4b4b4.Tff7b72catchTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pathTable Tff7b72= Te6edf3pathResTb4b4b4.Te6edf3tableTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3totalItems Tff7b72= Te6edf3pathResTb4b4b4.Te6edf3totalTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3responsiveItems Tff7b72= Te6edf3pathResTb4b4b4.Te6edf3responsiveTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3unresponsiveItems Tff7b72= Te6edf3pathResTb4b4b4.Te6edf3unresponsiveTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3activeRemoteHash Tff7b72= Te6edf3pathResTb4b4b4.Te6edf3remote Tff7b72|| Te6edf3rateResTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3remote Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3rateTable Tff7b72= Te6edf3rateResTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3ratesTb4b4b4;
Tff7b72const Te6edf3nameSet Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Te6edf3ifaceResTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3interfaces Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3row Tff7b72of Te6edf3discResTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3active Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3rowTff7b72?Tb4b4b4.Te6edf3nameTb4b4b4) Tb4b4b4{
Te6edf3nameSetTb4b4b4.Te6edf3addTb4b4b4(Tffa657StringTb4b4b4(Te6edf3rowTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3d Tff7b72of Te6edf3discResTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3interfaces Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3d Tff7b72&& Tff7b72typeof Te6edf3d Tff7b72=== Ta5d6ff"object" Tff7b72&& Te6edf3dTb4b4b4.Te6edf3nameTb4b4b4) Tb4b4b4{
Te6edf3nameSetTb4b4b4.Te6edf3addTb4b4b4(Tffa657StringTb4b4b4(Te6edf3dTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3interfaces Tff7b72= Tffa657ArrayTb4b4b4.Tff7b72fromTb4b4b4(Te6edf3nameSetTb4b4b4)Tb4b4b4.Te6edf3sortTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3detail Tff7b72= Te6edf3eTff7b72?Tb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Te6edf3eTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Ta5d6ff""Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(
Te6edf3detail Tff7b72? Ta5d6ff`Tffd700${Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.failed_fetch"Tb4b4b4)Tffd700}Ta5d6ff: Tffd700${Te6edf3detailTffd700}Ta5d6ff` Tff7b72: Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.failed_fetch"Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isLoading Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3refreshTableTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isLoading Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3res Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchPathTableTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pathTable Tff7b72= Te6edf3resTb4b4b4.Te6edf3tableTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3totalItems Tff7b72= Te6edf3resTb4b4b4.Te6edf3totalTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3responsiveItems Tff7b72= Te6edf3resTb4b4b4.Te6edf3responsiveTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3unresponsiveItems Tff7b72= Te6edf3resTb4b4b4.Te6edf3unresponsiveTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3activeRemoteHash Tff7b72= Te6edf3resTb4b4b4.Te6edf3remote Tff7b72|| Ta5d6ff""Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3detail Tff7b72= Te6edf3eTff7b72?Tb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Te6edf3eTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Ta5d6ff""Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(
Te6edf3detail Tff7b72? Ta5d6ff`Tffd700${Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.failed_fetch"Tb4b4b4)Tffd700}Ta5d6ff: Tffd700${Te6edf3detailTffd700}Ta5d6ff` Tff7b72: Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.failed_fetch"Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isLoading Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3fetchPathTableTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72let Te6edf3hops Tff7b72= Tff7b72undefinedTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3filterHops Tff7b72!== Tff7b72null Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3filterHops Tff7b72!== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3parsed Tff7b72= Tffa657NumberTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3filterHopsTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3parsedTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.invalid_hops"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3hops Tff7b72= Te6edf3parsedTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3params Tff7b72= Tb4b4b4{
Te6edf3pageTff7b72: Tff7b72thisTb4b4b4.Te6edf3currentPageTb4b4b4,
Te6edf3limitTff7b72: Tff7b72thisTb4b4b4.Te6edf3itemsPerPageTb4b4b4,
Te6edf3searchTff7b72: Tff7b72thisTb4b4b4.Te6edf3searchQuery Tff7b72|| Tff7b72undefinedTb4b4b4,
Tff7b72interfaceTff7b72: Tff7b72thisTb4b4b4.Te6edf3filterInterface Tff7b72|| Tff7b72undefinedTb4b4b4,
Te6edf3hopsTb4b4b4,
Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3remoteQueryParamsTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3res Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/rnpath/table"Tb4b4b4, Tb4b4b4{ Te6edf3params Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3resTb4b4b4.Te6edf3dataTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3getStateColorTb4b4b4(Te6edf3stateTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3state Tff7b72=== T79c0ff2Tb4b4b4) Tff7b72return Ta5d6ff"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-300"Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3state Tff7b72=== T79c0ff1Tb4b4b4) Tff7b72return Ta5d6ff"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300"Tb4b4b4;
Tff7b72return Ta5d6ff"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3getStateTextTb4b4b4(Te6edf3stateTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3state Tff7b72=== T79c0ff2Tb4b4b4) Tff7b72return Ta5d6ff"RESPONSIVE"Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3state Tff7b72=== T79c0ff1Tb4b4b4) Tff7b72return Ta5d6ff"UNRESPONSIVE"Tb4b4b4;
Tff7b72return Ta5d6ff"UNKNOWN"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3dropPathTb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tb4b4b4(Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.drop_confirm"Tb4b4b4, Tb4b4b4{ Te6edf3hash Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3res Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/rnpath/drop"Tb4b4b4, Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3hash Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3resTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3successTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.path_dropped"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3refreshAllTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.failed_drop"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.error_drop"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3requestPathTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/rnpath/request"Tb4b4b4, Tb4b4b4{ Te6edf3destination_hashTff7b72: Tff7b72thisTb4b4b4.Te6edf3requestHash Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.path_requested"Tb4b4b4, Tb4b4b4{ Te6edf3hashTff7b72: Tff7b72thisTb4b4b4.Te6edf3requestHashTb4b4b4.Te6edf3substringTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff8Tb4b4b4) Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3requestHash Tff7b72= Ta5d6ff""Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.failed_request"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3dropAllViaTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tb4b4b4(Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.drop_via_confirm"Tb4b4b4, Tb4b4b4{ Te6edf3hashTff7b72: Tff7b72thisTb4b4b4.Te6edf3dropViaHash Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3res Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/rnpath/drop-via"Tb4b4b4, Tb4b4b4{
Te6edf3transport_instance_hashTff7b72: Tff7b72thisTb4b4b4.Te6edf3dropViaHashTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3resTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3successTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.paths_dropped"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3dropViaHash Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3refreshAllTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.failed_drop_paths"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3dropAnnounceQueuesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tb4b4b4(Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.purge_confirm"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/rnpath/drop-queues"Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.queues_purged"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnpath.failed_purge"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3calculateRateTb4b4b4(Te6edf3rateTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3rateTb4b4b4.Te6edf3timestampsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tff7b72return T79c0ff0Tb4b4b4;
Tff7b72const Te6edf3startTs Tff7b72= Te6edf3rateTb4b4b4.Te6edf3timestampsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3span Tff7b72= Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72/ T79c0ff1000 Tff7b72- Te6edf3startTsTb4b4b4, T79c0ff3600.0Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3spanHours Tff7b72= Te6edf3span Tff7b72/ T79c0ff3600.0Tb4b4b4;
Tff7b72return Tb4b4b4(Te6edf3rateTb4b4b4.Te6edf3timestampsTb4b4b4.Te6edf3length Tff7b72/ Te6edf3spanHoursTb4b4b4)Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff2Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatDateTb4b4b4(Te6edf3tsTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72new Tffa657DateTb4b4b4(Te6edf3ts Tff7b72* T79c0ff1000Tb4b4b4)Tb4b4b4.Te6edf3toLocaleStringTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatTimeAgoTb4b4b4(Te6edf3tsTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatSecondsAgoTb4b4b4(Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72/ T79c0ff1000 Tff7b72- Te6edf3tsTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>
Tb4b4b4<Tff7b72style Te6edf3scopedTb4b4b4>
Tb4b4b4@Tff7b72reference Ta5d6ff"../../style.css"Tb4b4b4;
Tb4b4b4.T56d364input-field Tb4b4b4{
@apply bg-gray-50/90 Te6edf3darkTb4b4b4:Te6edf3bg-zinc-800Tff7b72/T79c0ff80 Tff7b72border Tff7b72borderTff7b72-Tff7b72grayT79c0ff-200 Te6edf3darkTff7b72:Tff7b72borderTff7b72-Te6edf3zinc-700 Tff7b72textTff7b72-Te6edf3sm Te6edf3rounded-xl Te6edf3focusTff7b72:Te6edf3ring-2 Te6edf3focusTff7b72:Te6edf3ring-indigo-400 Te6edf3focusTff7b72:Tff7b72borderTff7b72-Tff7b72indigoT79c0ff-400 Te6edf3darkTff7b72:Te6edf3focusTff7b72:Te6edf3ring-indigo-500 Te6edf3darkTff7b72:Te6edf3focusTff7b72:Tff7b72borderTff7b72-Tff7b72indigoT79c0ff-500 Tff7b72block Te6edf3w-full Te6edf3p-3 Tff7b72textTff7b72-Tff7b72grayT79c0ff-900 Te6edf3darkTff7b72:Tff7b72textTff7b72-Tff7b72grayT79c0ff-100 Tff7b72transitionTb4b4b4;
Tb4b4b4}
Tb4b4b4<Tb4b4b4/Tff7b72styleTb4b4b4>
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────